﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Data.Linq.SqlClient;

namespace BKH.BLL
{
    class NhanVienBUO:IBUO<tbl_NhanVien>
    {

        HospitalDBDataContext context = new HospitalDBDataContext();    
        

        public bool Insert(tbl_NhanVien obj)
        {
            try
            {
                context.tbl_NhanViens.InsertOnSubmit(obj);
                context.SubmitChanges();
                return true;

            }
            catch (Exception)
            {

                return false;
            }
        }

        public bool Delete(int id)
        {
            tbl_NhanVien nv = context.tbl_NhanViens.Where(n => n.NhanVienID == id).ToList<tbl_NhanVien>().FirstOrDefault();
            if (nv != null)
            {
                context.tbl_NhanViens.DeleteOnSubmit(nv);
                try
                {
                    context.SubmitChanges();
                    return true;
                }
                catch (Exception)
                {

                    return false;
                }
               
                
            }
            return false;
        }

        public bool Delete(tbl_NhanVien obj)
        {
            throw new NotImplementedException();
        }

        public List<tbl_NhanVien> GetAll()
        {
            return context.tbl_NhanViens.ToList<tbl_NhanVien>();
        }

        public tbl_NhanVien GetSingle(int id)
        {
            return context.tbl_NhanViens.Where(n => n.NhanVienID == id).ToList<tbl_NhanVien>().FirstOrDefault();
        }

        public bool Update(int id, tbl_NhanVien obj)
        {
            tbl_NhanVien nv = context.tbl_NhanViens.Where(n => n.NhanVienID == id).ToList<tbl_NhanVien>().FirstOrDefault();
            try
            {
                nv.Address = obj.Address;
                nv.CurrentSalary = obj.CurrentSalary;
                nv.DateOfBirth = obj.DateOfBirth;
                nv.FirstName = obj.FirstName;                
                nv.HoursPerWeek = obj.HoursPerWeek;
                nv.LastName = obj.LastName;
                nv.NIN = obj.NIN;
                nv.PaidWeeklyOrMonthly = obj.PaidWeeklyOrMonthly;
                nv.PermanentOrTemporary = obj.PermanentOrTemporary;
                nv.Position = obj.Position;
                nv.SalaryScale = obj.SalaryScale;
                nv.Tel = obj.Tel;
                nv.Sex = obj.Sex;
                nv.CurrentSalary = obj.CurrentSalary;
                context.SubmitChanges();
                return true;


            }
            catch (Exception)
            {
                
                return false;
            }
        }
        public List<tbl_NhanVien> GetAllNhanVienByKhoa(int idKhoa)
        {
            return context.tbl_NhanViens.Where(n => n.KhoaID == idKhoa).ToList<tbl_NhanVien>();
        }
        public List<tbl_NhanVien> SearchNhanVien(String Name)
        {
            int intLast = 0;
            int intfirst=0;
            if(Name.IndexOf(" ")>0)
            {
                intfirst = Name.IndexOf(" ") - 1;

            }



            String firstName = Name.Substring(0, intfirst);
            String con=Name.Reverse().ToString();

            if (con.IndexOf(" ") > 0)
            {
                intfirst = con.IndexOf(" ") - 1;
            }
            String lastName = con.Substring(0, intLast);



            return context.tbl_NhanViens.Where(n => n.LastName.Contains(lastName)).ToList<tbl_NhanVien>();

                
        }

        public int GetMaKhoa(int idnv)
        {
           return context.tbl_NhanViens.Where(n => n.NhanVienID == idnv).ToList<tbl_NhanVien>().FirstOrDefault().KhoaID.Value;
        }
        public List<tbl_NhanVien> GetListNVByKhoa(int makhoa) 
        {
            return context.tbl_NhanViens.Where(n => n.KhoaID == makhoa).ToList<tbl_NhanVien>();


        }
    }
}
